package mx.itesm.ccm.compu.service;

import java.sql.Time;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashSet;
import java.util.Set;

import org.json.JSONException;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional;


import mx.itesm.ccm.compu.beans.DIA_SEMANA;
import mx.itesm.ccm.compu.beans.Grupo;
import mx.itesm.ccm.compu.beans.Horarios;
import mx.itesm.ccm.compu.dao.GrupoDao;
import mx.itesm.ccm.compu.dao.HorarioDao;


public class GrupoService {

	Logger log = LoggerFactory.getLogger(GrupoService.class);
	private GrupoDao grupoDao;
	private HorarioDao horarioDao;
	
	@Transactional
	public void guardaHorario(JSONObject data, DIA_SEMANA dia, String hora) throws JSONException, ParseException{
		Grupo grupo = new Grupo();
		
		  grupo.setCrn(data.get("crn").toString());
		  grupo.setNombremat(data.get("nommat").toString());
		  grupo.setNomina(data.get("nomina").toString());
		  grupo.setCvemat(data.get("cvemat").toString());

		  grupo.setProf(data.get("nombre").toString() + " " + data.get("paterno").toString() + " " + data.get("materno").toString());
		  grupo.setPeriodo(1);
		  
		  Horarios horario = new Horarios();
		  
		  SimpleDateFormat sdf = new SimpleDateFormat("yyyy/dd/mm");
		  
		  horario.setDia(dia);
		  horario.setHora(new Time(12, 00, 00));
		  
		  
		  Grupo savedGrupo = grupoDao.findByCrn(data.get("crn").toString());
		  if(savedGrupo!=null){
			  
			  log.info("existe un horario con esos datos {} actualizando",  savedGrupo.getId());
			  
			  
			 savedGrupo.getHorarios().add(horario);
			 
			 
			 horarioDao.create(horario);
			 grupoDao.persist(savedGrupo);
			  
		  }else{
			  
			  log.info("guardando horario");
			  Set<Horarios> horarios = new HashSet<Horarios>();
			  
			  horarioDao.create(horario);
			  horarios.add(horario);
			  grupo.setHorarios(horarios);
			  
			  grupoDao.persist(grupo);
			  
			  
		  }
		  

	}


	public GrupoDao getGrupoDao() {
		return grupoDao;
	}


	public void setGrupoDao(GrupoDao grupoDao) {
		this.grupoDao = grupoDao;
	}


	public HorarioDao getHorarioDao() {
		return horarioDao;
	}


	public void setHorarioDao(HorarioDao horarioDao) {
		this.horarioDao = horarioDao;
	}
	
	
	
	
	
	
}
